#include <iostream>
#include <stack>

using namespace std;
//stack容器:stack是一种先进后出(First In Last Out,FILO)的数据结构，它只有一个出口
//栈中只有顶端的元素才可以被外界使用，因此栈不允许有遍历行为
//栈中进入数据称为  --- 入栈  push
//栈中弹出数据称为  --- 出栈  pop

//stack常用接口:栈容器常用的对外接口
//构造函数：
//1、stack<T> stk;                       //stack采用模板类实现， stack对象的默认构造形式
//2、stack(const stack &stk);            //拷贝构造函数
//赋值操作：
//stack& operator=(const stack &stk);    //重载等号操作符
//数据存取：
//1、push(elem);                         //向栈顶添加元素
//2、pop();                              //从栈顶移除第一个元素
//3、top();                              //返回栈顶元素
//大小操作：
//1、empty();                            //判断堆栈是否为空
//2、size();                             //返回栈的大小

void test() {
    stack<int> s;//创建栈容器 栈容器必须符合先进后出

    s.push(10);//向栈中添加元素，叫做 压栈 入栈
    s.push(20);
    s.push(30);

    cout << "栈的大小为:" << s.size() << endl;

    while (!s.empty()) {
        cout << "栈顶元素为:" << s.top() << endl;//输出栈顶元素
        s.pop();//弹出栈顶元素
    }
    cout << "栈的大小为:" << s.size() << endl;
}

int main() {
    test();
    return 0;
}

